#!/bin/bash
# run.tests - Check that the algorithm does what it is supposed to
# Copyright (C) 1999,2000 Dov Grobgeld, and
# Copyright (C) 2001,2002 Behdad Esfahbod.
# 
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public  
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# 
# This library is distributed in the hope that it will be useful,  
# but WITHOUT ANY WARRANTY; without even the implied warranty of   
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
# 
# You should have received a copy of the GNU Lesser General Public License  
# along with this library, in a file named COPYING; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place, Suite 330,
# Boston, MA 02111-1307, USA
# 
# For licensing issues, contact <dov@imagic.weizmann.ac.il> and
# <fwpg@sharif.edu>.

if test -z "$srcdir"; then
  srcdir=.
  test "${VERBOSE+set}" != "set" && VERBOSE=yes
fi

# See how redirections should work.
if test -z "$VERBOSE"; then
   exec > /dev/null 2>&1
fi

path=`dirname $0`

if ! test -f "./fribidi"; then
  echo "run.tests: you must make fribidi first"
  exit 1
fi

TEST () {
  testcase="$1"
  test="${testcase##*/}"
  test="${test%.input}"
  charset="${testcase#*_}"
  charset="${charset%%_*}"
  echo -n "=== $test === "
  if ! ./fribidi --charset "$charset" </dev/null >/dev/null 2>&1; then
    echo " [Character set not supported]"
    return 0
  fi
  ./fribidi --test --charset "$charset" "$testcase" > "$test.output"

  reference="${testcase%.input}.reference";
  test -f "$reference" || reference="tests/${reference##*/}"
  if diff "$test.output" "$reference"; then
    rm "$test.output"
    echo " [Passed]"
    return 0
  else
    echo " [Failed]"
    return 1
  fi
}

retval=0
for testcase in "$path/tests/"test_*.input; do
  TEST "$testcase" || retval=1
done

exit $retval
